package comprasdiretas.entity;

import java.io.Serializable;
import java.sql.Date;
import java.text.SimpleDateFormat;

import javax.persistence.*;

/**
 * Entity implementation class for Entity: UsuarioEntity
 *
 */

@Entity
@Table(name="compradireta", schema="comprasdiretasdb")
@NamedQueries({@NamedQuery(name="procurarCompraDiretaPeloID", query="SELECT i FROM CompraDiretaEntity i WHERE i.id LIKE :id ORDER BY i.numero"),
	@NamedQuery(name="procurarCompraDiretaPeloNumero", query="SELECT i FROM CompraDiretaEntity i WHERE i.numero LIKE :numero ORDER BY i.numero"),
	@NamedQuery(name="procurarCompraDiretaPeloTipo", query="SELECT i FROM CompraDiretaEntity i WHERE i.tipo = :tipo ORDER BY i.numero"),
	@NamedQuery(name="procurarCompraDiretaPeloNumeroTipo", query="SELECT i FROM CompraDiretaEntity i WHERE i.numero LIKE :numero AND i.tipo = :tipo ORDER BY i.numero"),
	@NamedQuery(name="procurarCompraDiretaPeloPeriodo", query="SELECT i FROM CompraDiretaEntity i WHERE i.data >= :dataInicio AND i.data <= :dataFim ORDER BY i.numero"),
	@NamedQuery(name="procurarCompraDiretaPeloPeriodoTipo", query="SELECT i FROM CompraDiretaEntity i WHERE i.data >= :dataInicio AND i.data <= :dataFim AND i.tipo = :tipo ORDER BY i.numero"),
	@NamedQuery(name="procurarCompraDiretaPeloPeriodoNumeroTipo", query="SELECT i FROM CompraDiretaEntity i WHERE i.data >= :dataInicio AND i.data <= :dataFim AND i.numero = :numero AND i.tipo = :tipo ORDER BY i.numero"),
	@NamedQuery(name="procurarCompraDiretaPeloNumeroData", query="SELECT i FROM CompraDiretaEntity i WHERE i.numero LIKE :numero AND i.data = :data ORDER BY i.numero")})
public class CompraDiretaEntity implements Serializable {

	   
	@Id
	@TableGenerator(allocationSize=1,initialValue=1,name="InexigibilidadeDispensa_SEQ", 
			table="sequence",pkColumnName="SEQ_NAME", valueColumnName="SEQ_COUNT", 
			schema="comprasdiretasdb")
	@GeneratedValue(strategy=GenerationType.TABLE, generator="InexigibilidadeDispensa_SEQ")
	@Column(name="id")
	private int id;
	@Column(name="numero")
	private int numero;
	@Column(name="data")
	private Date data;
	@Column(name="artigo")
	private int artigoLei;
	@ManyToOne
	@JoinColumn(name="fornecedores", referencedColumnName="id")
	private FornecedorEntity fornecedorVencedor;
	@ManyToOne
	@JoinColumns({@JoinColumn(name="pedido", referencedColumnName="numPedido"),@JoinColumn(name="ano", referencedColumnName="ano")})
	private PedidoEntity pedido;
	@ManyToOne
	@JoinColumn(name="servidor", referencedColumnName="idServidor")
	private ServidorEntity servidor;
	@Column(name="tipo")
	private char tipo;// d - dispensa ou i - inexigibilidade
	@Column(name="empenhoTipo")
	private char empenhoTipo;// g - global, e - estimativa ou o - ordin�rio
	
	private static final long serialVersionUID = 2L;

	public CompraDiretaEntity() {
	}
	
	public CompraDiretaEntity(int numero,Date data,int artigo,
			FornecedorEntity fornecedor, PedidoEntity pedido, ServidorEntity servidor,
			char tipo, char empenhoTipo) {
		this.numero=numero;
		this.data=data;
		this.artigoLei=artigo;
		this.fornecedorVencedor=fornecedor;
		this.pedido=pedido;
		this.servidor=servidor;
		this.tipo=tipo;
		this.empenhoTipo=empenhoTipo;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public int getNumero() {
		return numero;
	}

	public void setNumero(int numero) {
		this.numero = numero;
	}

	public Date getData() {
		return data;
	}
	
	public String getDataFormatada() {
		SimpleDateFormat formatarData = new SimpleDateFormat("dd/MM/yyyy");
		String dataFormatada = formatarData.format(data);
		return dataFormatada;
	}

	public void setData(Date data) {
		this.data = data;
	}

	public int getArtigoLei() {
		return artigoLei;
	}

	public void setArtigoLei(int artigoLei) {
		this.artigoLei = artigoLei;
	}

	public FornecedorEntity getFornecedorVencedor() {
		return fornecedorVencedor;
	}

	public void setFornecedorVencedor(FornecedorEntity fornecedorVencedor) {
		this.fornecedorVencedor = fornecedorVencedor;
	}

	public PedidoEntity getPedido() {
		return pedido;
	}

	public void setPedido(PedidoEntity pedido) {
		this.pedido = pedido;
	}

	public ServidorEntity getServidor() {
		return servidor;
	}

	public void setServidor(ServidorEntity servidor) {
		this.servidor = servidor;
	}

	public char getTipo() {
		return tipo;
	}
	
	public String getTipoNome(){
		if (tipo=='d') {
			return "Dispensa";
		}else{
			return "Inexigibilidade";
		}
	}

	public void setTipo(char tipo) {
		this.tipo = tipo;
	}

	public void setEmpenhoTipo(char empenhoTipo) {
		this.empenhoTipo = empenhoTipo;
	}

	public char getEmpenhoTipo() {
		return empenhoTipo;
	}

	   
}
